/*
 * Copyright (c) 2007-2020 西安交通信息投资营运有限公司 版权所有
 */

package com.xci.edu.core.dao;

import com.github.lvyanyang.annotation.Paging;
import com.xci.edu.core.entity.EduStudentPeriodSummary;
import com.xci.edu.core.filter.EduStudentPeriodSummaryFilter;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 学员学时汇总数据层
 * @author 焦元义 jiaoyuanyi@xci96716.com
 * @since 2020-11-24 15:14:37
 */
public interface EduStudentPeriodSummaryDao {
    /**
     * 新建学员学时汇总
     * @param entity 学员学时汇总实体
     * @return 返回影响的行数
     */
    int insert(@Param("entity") EduStudentPeriodSummary entity);

    /**
     * 修改学员学时汇总
     * @param entity 学员学时汇总实体
     * @return 返回影响的行数
     */
    int update(@Param("entity") EduStudentPeriodSummary entity);

    /**
     * 根据主键修改学员学时汇总状态
     * @param id     学员学时汇总主键
     * @param status 学员学时汇总状态
     * @return 返回影响的行数
     */
    int updateStatus(@Param("id") Long id, @Param("status") Boolean status);

//    /**
//     * 根据主键删除学员学时汇总
//     * @param  学员学时汇总主键
//     * @return 返回影响的行数
//     */
//    int deleteById(@Param("")String);


    ///**
    // * 根据主键删除学员学时汇总
    // * @param  学员学时汇总主键
    // * @param deleteId 删除标识
    // * @return 返回影响的行数
    // */
    //int deleteById(@Param("") String , @Param("deleteId") Long deleteId});

    ///**
    // * 是否存在指定主键的学员学时汇总
    // * @param  学员学时汇总主键
    // * @return 如果存在返回true
    // */
    //boolean existxById(@Param("") String );

    ///**
    // * 是否存在指定名称的学员学时汇总
    // * @param name 学员学时汇总名称
    // * @param excludeId 排除的主键，如果为null则不指定排除的主键
    // * @return 如果存在返回true
    // */
    //boolean existxByName(@Param("name") String name, @Param("excludeId") String excludeId);

    ///**
    // * 是否存在指定编码的学员学时汇总
    // * @param code 学员学时汇总编码
    // * @param excludeId 排除的主键，如果为null则不指定排除的主键
    // * @return 如果存在返回true, 否则返回false
    // */
    //boolean existxByCode(@Param("code") String code, @Param("excludeId") String excludeId);


//    /**
//     * 根据主键查询单个学员学时汇总
//     * @param  学员学时汇总主键
//     * @return 返回学员学时汇总实体
//     */
//    EduStudentPeriodSummary selectById(@Param("")String);

    ///**
    // * 根据编码查询单个学员学时汇总
    // * @param code 学员学时汇总编码
    // * @return 返回学员学时汇总实体
    // */
    //EduStudentPeriodSummary selectByCode(@Param("code") String code);


    /**
     * 学员学时汇总
     * @param filter 过滤条件
     * @return 返回学员学时汇总列表
     */
    List<EduStudentPeriodSummary> selectPeriodToStudent(@Param("filter") EduStudentPeriodSummaryFilter filter);

    /**
     * 查询学员学时汇总列表
     * @param filter 过滤条件
     * @return 返回学员学时汇总列表
     */
    List<EduStudentPeriodSummary> selectList(@Param("filter") EduStudentPeriodSummaryFilter filter);

    /**
     * 查询学员学时汇总分页列表
     * @param filter 过滤条件
     * @return 返回学员学时汇总分页列表
     */
    /*
        allowSortNames = {"student_id","courseware_id","period"},
        sortNameMaps = {"student_id:student_id","courseware_id:courseware_id","period:period"}
    */
    @Paging
    List<EduStudentPeriodSummary> selectPageList(@Param("filter") EduStudentPeriodSummaryFilter filter);
}
